from rest_framework import serializers
from zhxy import models
from zhxy.models import UserCoupon


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.User
        fields = '__all__'


class OutletSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Outlet
        fields = '__all__'


class EquipmentSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Equipment
        fields = '__all__'


class CouponSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Coupon
        fields = '__all__'


class UserCouponSerializer(serializers.ModelSerializer):

    class Meta:
        model = models.UserCoupon
        fields = '__all__'
        depth = 1


class OrderfgSerializer(serializers.ModelSerializer):
    couponname = serializers.SerializerMethodField(read_only=True,allow_null=True)
    class Meta:
        model = models.Orderfg
        fields = '__all__'
        depth = 1
    def get_couponname(self, obj):
        # 这里 obj 是你的模型实例
        # 你可以通过 obj 访问模型的字段，或者执行其他逻辑来获取 couponname 的值
        # 例如，如果 couponname 是基于某个关联模型或逻辑计算得出的
        try:
            # 假设有一个关联模型叫 Coupon，并且 YourModel 有一个叫 coupon 的外键
            coupon = obj.usedcoupon.coupon.name
            return coupon.name  # 返回优惠券的名称
        except :
            # 如果 obj 没有 coupon 或者 coupon 没有 name 属性，返回 None
            # 注意：在 DRF 中，null=True 允许字段为 null，但如果你想要返回空字符串或其他默认值，也可以在这里处理
            return None


class SessionSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.UserServiceSession
        fields = '__all__'
